//整个头文件在条件编译语句中使用
#ifndef BMP_H 
#define BMP_H

#pragma pack(1)

typedef struct tagBITMAPFILEHEADER
{
	unsigned char  bfType[2];      //文件类型
    unsigned int   bfSize;        //结构体大小
    unsigned short bfReserved1;   
    unsigned short bfReserved2;   
    unsigned int   bfOffBits;     // 从文件头到像素数据的偏移  (10-13字节)
}BITMAPFILEHEADER;
typedef struct tagBITMAPINFOHEADER
{
    unsigned int    biSize;          
    long            biWidth;         //图像宽度
    long            biHeight;        //图像高度
    unsigned short  biPlanes;        //平面数，通常为1
    unsigned short  biBitCount;      //每像素位数，256灰度图像为8，二值图像为2，彩色图像为24
    unsigned int    biCompression;   
    unsigned int    biSizeImage;     // 像素数据所占大小, 这个值应该等于上面文件头结构中bfSize-bfOffBits (34-37字节)
    long            biXPelsPerMeter; 
    long            biYPelsPerMeter; 
    unsigned int    biClrUsed;       
    unsigned int    biClrImportant;  
}BITMAPINFOHEADER;
typedef struct tagRGBQUAD
{
    unsigned char rgbBlue;   //该颜色的蓝色分量  (值范围为0-255)
    unsigned char rgbGreen;  //该颜色的绿色分量  (值范围为0-255)
    unsigned char rgbRed;    //该颜色的红色分量  (值范围为0-255)
    unsigned char rgbReserved;// 保留，必须为0
}RGBQUAD;

#pragma pack(0)

#endif